package com.study.d012Components.tableview;

import javafx.application.Application;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import javafx.util.Callback;

/**Property数据类型 --  基本table展示， 列设置使用 PropertyValueFactory
*@description
*@author xtayhame
*date 2020年3月14日
*version
*since v1.0
*/
public class TableViewMain4 extends Application{
	public static void main(String[] args) {
		launch(args);

	}
	@Override
	public void start(Stage stage) throws Exception {
		AnchorPane an = new AnchorPane();

		Button b1 =new Button("测试");

		TableView<Data2> tableView = new TableView<Data2>();


		an.getChildren().addAll(b1, tableView);
		AnchorPane.setTopAnchor(b1, 10.0);
		AnchorPane.setLeftAnchor(b1, 20.0);
		AnchorPane.setTopAnchor(tableView, 40.0);
		AnchorPane.setLeftAnchor(tableView, 20.0);


		stage.setScene(new Scene(an, 400, 500));
		stage.show();


		ObservableList<Data2> datas=FXCollections.observableArrayList();
		Data2 d1 = new Data2("张三", 19, 55.9, true);
		Data2 d2 = new Data2("李四", 20, 75.9, true);
		Data2 d3 = new Data2("王五", 21, 85.9, false);
		Data2 d4 = new Data2("赵柳", 55, 95.9, true);

		datas.addAll(d1,d2,d3,d4);

		tableView.setItems(datas);

		TableColumn<Data2, String> tc_name=new TableColumn<Data2, String>("姓名");
		tc_name.setCellValueFactory(new PropertyValueFactory<Data2, String>("name"));

		TableColumn<Data2, Integer> tc_age=new TableColumn<Data2, Integer>("年龄");
		tc_age.setCellValueFactory(new PropertyValueFactory<Data2, Integer>("age"));


		TableColumn<Data2, Double> tc_score=new TableColumn<Data2, Double>("分数");
		tc_score.setCellValueFactory(new PropertyValueFactory<Data2, Double>("score"));

		TableColumn<Data2, Boolean> tc_is=new TableColumn<Data2, Boolean>("是否选中");
		tc_is.setCellValueFactory(new PropertyValueFactory<Data2, Boolean>("is"));

		tableView.getColumns().add(tc_name);
		tableView.getColumns().add(tc_age);
		tableView.getColumns().add(tc_score);
		tableView.getColumns().add(tc_is);

		b1.setOnAction(new EventHandler<ActionEvent>() {

			@Override
			public void handle(ActionEvent event) {
				//新增
				//tableView.getItems().add(new Data("A", 19, 55.9, true));

				//删除
				//tableView.getItems().remove(0);

				//注意：虽然使用的Data2类中的属性为Property类型，但是使用PropertyValueFactory进行列的填充时，扔需要刷新
				//d1.setName("李逵");
				//tableView.refresh();

				//新增可以
				//tableView.getItems().add(new Data2("F", 19, 55.9, true));

				//仍然需要刷新
				tableView.getItems().get(0).setName("M");
				tableView.refresh();
			}
		});

	}
}
